
package com.xtsoft.platform.base.system.service;


import com.xtsoft.core.service.GenericService;
import com.xtsoft.core.utils.ResultMessage;
import com.xtsoft.core.utils.ResultMsg;
import com.xtsoft.core.utils.tree.CommonTreeNode;
import com.xtsoft.platform.base.system.domain.SysOrganize;
import com.xtsoft.platform.base.system.repository.SysOrganizeRepository;

import java.beans.IntrospectionException;
import java.lang.reflect.InvocationTargetException;
import java.util.List;


public interface SysOrganizeService extends GenericService<SysOrganize,String, SysOrganizeRepository> {

	/**
	 * <p> 构建企业树  </p>  
	 * @return
	 * @throws NoSuchFieldException
	 * @throws SecurityException
	 * @throws IllegalAccessException
	 * @throws IllegalArgumentException
	 * @throws InvocationTargetException
	 * @throws IntrospectionException
	 * @return List<CommonTreeNode>
	 * @throws  
	 * @author tuyingchao  
	 * @date 2020年6月3日 
	 * @time 上午11:16:13
	 */
	public List<CommonTreeNode>  getOrganizeTree() throws NoSuchFieldException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, IntrospectionException;
	

	/**
	 * <p> 启用/停用企业  </p>  
	 * @param organizeIds
	 * @return
	 * @return ResultMessage
	 * @throws  
	 * @author tuyingchao 
	 * @date 2020年6月3日 
	 * @time 上午11:12:20
	 */
	public ResultMessage enableOrDisable(String organizeIds);
	
	
	/**
	 * 功能: 根据行业查找企业 并根据规模排序
	 * @param tradeId
	 * @return
	 * @return List<SysOrganize>
	 * @date 2018年8月28日 下午4:28:07
	 * @auth kezhuan
	 */
	public List<SysOrganize> getMultCombox(String tradeId);
	
	

	/**
	 * 
	 * <p> 删除企业  </p>  
	 * @param id
	 * @return
	 * @return ResultMsg
	 * @throws  
	 * @author tuyingchao 
	 * @date 2020年6月4日 
	 * @time 下午7:57:12
	 */
	public ResultMsg removeOrganize(String id);


	/**
	 * 
	 * <p> 根据条件获取企业树  </p>  
	 * @param isShowDept
	 * @param isHideState
	 * @param isCheckedBox
	 * @return
	 * @return List<CommonTreeNode>
	 * @throws  
	 * @author litao
	 * @date 2022年2月21日 
	 * @time 上午11:04:04
	 */
	public String getOrganizeTree(Integer isShowDept, Integer isHideState, Integer isCheckedBox)throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, InvocationTargetException, IntrospectionException;


	/**
	 * 
	 * <p> 新增企业  </p>  
	 * @param sysOrganize
	 * @return void
	 * @throws  
	 * @author litao
	 * @date 2022年2月21日 
	 * @time 下午3:50:11
	 */
	public void addSysOrganize(SysOrganize sysOrganize);


	/**
	 * 
	 * <p> 编辑企业  </p>  
	 * @param sysOrganize
	 * @param result 
	 * @return void
	 * @throws  
	 * @author litao
	 * @date 2022年2月21日 
	 * @time 下午4:08:21
	 */
	public void updateSysOrganize(SysOrganize sysOrganize, SysOrganize result);
	/**
	 * 
	 * <p> 根据节点编码获取企业 </p>  
	 * @param nodeId
	 * @return
	 * @return SysOrganize
	 * @throws  
	 * @author defencez  
	 * @date 2022年2月22日 
	 * @time 下午12:57:34
	 */
	public SysOrganize getByNodeId(String nodeId);
	/**
	 * 
	 * <p> 根据节点编码、状态获取企业  </p>  
	 * @param nodeId
	 * @param state
	 * @return
	 * @return SysOrganize
	 * @throws  
	 * @author defencez  
	 * @date 2022年2月22日 
	 * @time 下午1:01:42
	 */
	public SysOrganize getByNodeIdAndState(String nodeId, Integer state);
	/**
	 * 
	 * <p> 根据父节点编码、状态获取企业列表  </p>  
	 * @param parentNodeId
	 * @param state
	 * @return
	 * @return List<SysOrganize>
	 * @throws  
	 * @author defencez  
	 * @date 2022年2月22日 
	 * @time 下午1:17:14
	 */
	public List<SysOrganize> getByParentNodeIdAndState(String parentNodeId, Integer state);

	/**
	 * 
	 * <p> 根据企业类型ID查询改类型的企业  </p>  
	 * @param id
	 * @return
	 * @return List<SysOrganize>
	 * @throws  
	 * @author litao
	 * @date 2022年2月24日 
	 * @time 下午2:49:23
	 */
	public List<SysOrganize> findBySysOrganizeTypeId(String id);
}



